// 不使用Axios封装uniapp请求文件
const baseURL = "https://www.gujizhai.net";
// const baseURL = "http://192.168.5.3:8188";
// 节流函数实现
function throttle(func, delay) {
  let lastCallTime = 0; // 记录上次函数调用的时间戳

  return function (...args) {
    const now = Date.now(); // 获取当前时间戳

    // 检查距离上次调用的时间间隔是否超过指定的延迟时间
    if (now - lastCallTime >= delay) {
      func.apply(this, args); // 执行原始函数
      lastCallTime = now; // 更新上次调用时间戳
    }
  };
}

export default (option) => {
  return new Promise((resolve, reject) => {
    // 存储token
    const viptoken = uni.getStorageSync("viptoken");
    const header = {};
    if (viptoken) {
      header.token = viptoken;
    }

    // 加载中函数，节流控制
    const showLoading = throttle(() => {
      uni.showLoading({
        title: "加载中...",
      });
    }, 800);

    showLoading(); // 显示加载中效果

    //发起网络请求
    uni.request({
      header, //请求头携带参数
      // 请求地址
      url: baseURL + option.url,
      //请求方式
      method: option.method || "GET",
      // 携带参数
      data: option.data || {},
      // 成功
      success(res) {
        if (res.statusCode === 401) {
          uni.showToast({
            title: "请登录",
            icon: "none",
            duration: 2000,
          });
          uni.removeStorageSync("viptoken");
          setTimeout(() => {
            uni.navigateTo({
              url: "/subPackages/my/pages/login",
            });
          }, 700);
          throttle(() => {
            showLoading();
          }, 500);
          return Promise.reject("未授权");
        } else {
          const viptoken = uni.getStorageSync("viptoken");
          if (viptoken) {
            header.token = viptoken;
          }
          resolve(res);
          uni.hideLoading(); // 隐藏加载中效果
        }
      },
      //失败
      fail(error) {
        uni.hideLoading(); // 隐藏加载中效果
      },
    });
  });
};
